/*
 * IAnimationInterface.h
 *
 *  Created on: 25.02.2012
 *      Author: Kirill Blinov
 *      Copyright: LGPL
 */

#ifndef IANIMATIONINTERFACE_H_
#define IANIMATIONINTERFACE_H_

class IAnimationInterface
{
public:
	IAnimationInterface();
	virtual ~IAnimationInterface();

	/*
	 * Start playing animation
	 * input:
	 *  Speed - set animation play speed form it's original speed ( 1.0 = original speed )
	 *  StartTime - engine time in milliseconds
	 */
	virtual bool StartAnimation( const float Speed, const long long StartTime ) = 0;

    /*
     * Function stops playing animation
     * input:
     *  RollbackInitialState - true - revert object matrixes to initial state if possible
     *                         false - do nothing
     */
	virtual void StopAnimation( const bool RollbackInitialState ) = 0;

    /*
     * Pause animation
     * input
     *  SuspendTime - time to wait for animation go on playing,
     *                if 0 wait for RestoreAnimation()
     */
	virtual void PauseAnimation( const long long SuspendTime ) = 0;

	/*
	 * Go on playing animation if it was paused
	 */
	virtual bool RestoreAnimation() = 0;

	//static const long long PAUSE_WAIT_FOREVER = 0;
};

#endif /* IANIMATIONINTERFACE_H_ */
